Skip to content

chore(codex): skip codex track on bootstrap-paths#18

Merged
topcoder1 merged 1 commit into
mainfrom
chore/codex-skip-bootstrap-paths
May 1, 2026
Merged

chore(codex): skip codex track on bootstrap-paths#18
topcoder1 merged 1 commit into
mainfrom
chore/codex-skip-bootstrap-paths

Conversation

@topcoder1

Copy link
Copy Markdown
Owner

Summary

Add `paths-ignore` to `pr-codex-review.yml` so the Codex track is skipped entirely on `.github/workflows/**`, `Dockerfile`, and similar bootstrap paths. Removes the visual noise pattern user keeps hitting on workflow PRs:

```
PR Codex Review / classify FAILING (11s)
PR Codex Review / review SKIPPED
```

Why this is safe

ci-workflows main ruleset requires only `review / Claude Review`:

```bash
$ gh api repos/topcoder1/ci-workflows/rulesets/15788450
--jq '.rules[] | select(.type=="required_status_checks") | .parameters.required_status_checks[].context'
review / Claude Review
```

The Codex classify/review checks are NOT required → `paths-ignore` here does NOT create a merge deadlock (which is the standard footgun with paths-ignore on required checks).

Why skip instead of fix

Bootstrap-path PRs are blocked by design — the classifier exits 1 to require admin-merge for privilege-escalation paths. That gating signal is correct. The Codex track running on those paths would add no value: nothing about a workflow-file diff benefits from the second-model read Codex provides on application code. Better to short-circuit the whole track.

The Claude track stays on (no paths-ignore there) — that's the always-on primary review. Admins doing the manual merge still have Claude's read to consult.

After this lands

Bootstrap-path PRs will show:

Check Before After
`review / Claude Review` ✓ pass ✓ pass (unchanged)
`Lint / actionlint` ✓ pass ✓ pass (unchanged)
`Lint / prettier (markdown)` ✓ pass ✓ pass (unchanged)
`PR Codex Review / classify` ✗ fail (workflow doesn't run, check doesn't appear)
`PR Codex Review / review` ⊘ skip (workflow doesn't run, check doesn't appear)

Companion change in dotclaude: same paths-ignore added to the caller template so future installs ship with the fix.

🤖 Generated with Claude Code

Bootstrap-paths (.github/workflows/**, Dockerfile, etc.) are
deliberately classified as risk:blocked by pr-classify.yml — the
classifier exits 1 to require admin-merge for these privilege-
escalation paths. That's correct behavior for the gating signal, but
in the Codex track it surfaces as:

  PR Codex Review / classify   FAILING after 11s
  PR Codex Review / review     SKIPPED (cascades from classify)

Both are noise. Bootstrap-path PRs already require explicit admin
action; a secondary Codex review adds no signal because nothing about
the workflow-file diff benefits from the second-model read.

Add paths-ignore so the whole Codex workflow doesn't run on these
paths — no failing check appears.

Verified safe: ci-workflows main ruleset requires only
`review / Claude Review`. The Codex classify/review checks are NOT
required, so paths-ignore does NOT create a merge deadlock.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
- ".github/dependabot.yml"
- ".github/risk-paths.yml"
- ".github/CODEOWNERS"
- "Dockerfile"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: glob mismatch with risk-paths.yml

risk-paths.yml lists blocked: Dockerfile* (glob), so Dockerfile.dev, Dockerfile.prod, etc. all exit the classifier with risk:blocked. This entry only matches the bare Dockerfile, so a PR touching only Dockerfile.prod would still trigger the noisy failing classify check that this PR is trying to suppress.

Suggested change
- "Dockerfile"
- "Dockerfile*"

Comment on lines +21 to +26
paths-ignore:
- ".github/workflows/**"
- ".github/dependabot.yml"
- ".github/risk-paths.yml"
- ".github/CODEOWNERS"
- "Dockerfile"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: paths-ignore list is incomplete relative to risk-paths.yml blocked: section

The following paths are all blocked in .github/risk-paths.yml (causing classifier to exit 1) but are absent from this paths-ignore list. A PR that only touches these paths will still trigger the noisy failing classify check:

  • docker-compose*.yml / docker-compose*.yaml
  • infra/**
  • terraform/**
  • k8s/**
  • **/.env*
  • **/secrets*

The stated goal of this PR is to suppress that noise on all bootstrap paths — but these gaps mean it only partially achieves that. Suggest keeping the two lists in sync, e.g.:

Suggested change
paths-ignore:
- ".github/workflows/**"
- ".github/dependabot.yml"
- ".github/risk-paths.yml"
- ".github/CODEOWNERS"
- "Dockerfile"
paths-ignore:
- ".github/workflows/**"
- ".github/dependabot.yml"
- ".github/risk-paths.yml"
- ".github/CODEOWNERS"
- "Dockerfile*"
- "docker-compose*.yml"
- "docker-compose*.yaml"
- "infra/**"
- "terraform/**"
- "k8s/**"

@claude

claude Bot commented May 1, 2026

Copy link
Copy Markdown

Flagged 2 issues inline — paths-ignore list is incomplete vs. risk-paths.yml blocked section (missing docker-compose, infra/terraform/k8s globs) and Dockerfile entry should be Dockerfile* to match the glob in risk-paths.yml.

@topcoder1
topcoder1 merged commit 3bbde67 into main May 1, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant